package com.fsserver.core.dto;

import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;

/**
 * 支付请求数据传输对象
 * Payment Request DTO
 *
 * @author fsserver
 */
@Data
public class PaymentRequestDTO implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 订单号
     * Order number
     */
    @NotBlank(message = "订单号不能为空")
    private String orderNo;

    /**
     * 支付类型
     * Payment type
     */
    @NotBlank(message = "支付类型不能为空")
    private String paymentType;

    /**
     * 支付渠道
     * Payment channel (e.g., WECHAT, ALIPAY)
     */
    @NotBlank(message = "支付渠道不能为空")
    private String paymentChannel;

    /**
     * 金额（单位：分）
     */
    @NotNull(message = "支付金额不能为空")
    private Long amount;

    /**
     * 商品描述
     */
    @NotBlank(message = "商品描述不能为空")
    private String description;

    /**
     * 用户IP
     * User IP
     */
    private String userIp;

    /**
     * 支付超时时间（单位：分钟）
     */
    private Integer timeoutMinutes = 30;

    /**
     * 是否同步返回地址
     */
    private String returnUrl;

    /**
     * 应用ID，用于多应用场景
     */
    private String appId;

    /**
     * 微信openId，用于JSAPI支付
     */
    private String openId;

    /**
     * 付款码，用于付款码支付
     */
    private String authCode;
} 